#Pꃂf͕̌
#N=W{
#df1=A̎Rx
#df2=Η̎Rx
#e=ΗRMSEA
#alpha=LӐ(l0.05)
#power=W{Zöׂ̌(l0.8)

sempow<-function(N,df1,df2,e,alpha=0.05,power=0.8){
  sempow1<-function(N,df1,df2,e,alpha){
      crit<-qchisq(alpha,df1,0,lower.tail=FALSE)
      lambda1<-(N-1)*df2*e^2
      pow<-pchisq(crit,df1,lambda1,lower.tail=FALSE)
      return(list("criticalvalue"=crit,"lambda1"=lambda1,"power"=pow))
      }
      i<-0
      repeat{if(sempow1(i<-i+1,df1,df2,e,alpha)$power>=power)break}
      size<-i
      lambda2<-(size-1)*df2*e^{2}
      curve(sempow1(x,df1,df2,e,alpha)$power,1,
      size,xlab="samplesize", ylab="power")
      return(list(""=sempow1(N,df1,df2,e,alpha)$power,
      "ՊEl"=sempow1(N,df1,df2,e,alpha)$criticalvalue,
      "Sx"=sempow1(N,df1,df2,e,alpha)$lambda1,"ŏW{"=size,
@@@@"ŏW{ɑΉSx"=lambda2))
      }

#lXgf͕̌
#Pꃂf͕̌
#N=W{
#df1=lXg郂fA̎Rx
#df2=lXg郂fB̎Rx
#e1=fARMSEA
#e2=fBRMSEA
#alpha=LӐ(l0.05)
#power=W{Zöׂ̌(l0.8)

nsempow<-function(N,df1,df2,e1,e2,alpha=0.05,power=0.8){
   sempow2<-function(N,df1,df2,e1,e2,alpha){
      crit<-qchisq(alpha,df1-df2,0,lower.tail=FALSE)
      lambda1<-(N-1)*(df1*e1^2-df2*e2^2)
      pow<-pchisq(crit,df1-df2,lambda1,lower.tail=FALSE)
      return(list("criticalvalue"=crit,"lambda1"=lambda1,"power"=pow))
      }
      i<-0
      repeat{if(sempow2(i<-i+1,df1,df2,e1,e2,alpha)$power>=power)break}
      size<-i
      lambda2<-(size-1)*(df1*e1^2-df2*e2^2)
      curve(sempow2(x,df1,df2,e1,e2,alpha)$power,1,
      size,xlab="samplesize", ylab="power")
      return(list(""=sempow2(N,df1,df2,e1,e2,alpha)$power,
                  "ՊEl"=sempow2(i<-i+1,df1,df2,e1,e2,alpha)$criticalvalue, 
                  "Sx1"=sempow2(N,df1,df2,e1,e2,alpha)$lambda1,
                  "ŏW{"=size,"ŏW{ɑΉSx"=lambda2))
      }